package com.basker.pisces.domain.command.processor;

import com.basker.pisces.domain.command.event.CommandExecuteEvent;

/**
 * 事务命令的处理器接口
 *
 * @author hangwen
 */
public interface ITransactionalCommandExecuteProcessor extends ICommandExecuteProcessor {

    /**
     * 事务命令的主体已经执行完成，在事务提交之前触发，如果该方法出现异常，事务会回滚
     *
     * @param event
     */
    default void processBeforeTransactionalCommit(CommandExecuteEvent event) {

    }

    /**
     * 数据已经通过验证，开启事务前触发
     *
     * @param event
     */
    default void processBeforeTransactionalInvoke(CommandExecuteEvent event) {

    }

}
